package com.b.btest;

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TextView.BufferType;
import android.widget.Toast;

public class SettingActivity extends Activity {
	Spinner spinner;

	String ztc;
	String atc;
	String utc;
	String handleName;
	String ztcc;
	String atcc;
	String utcc;
	int rztc = 0;
	int ratc = 0;
	int rutc = 0;
	String rhn;

	/** SE用*/
	private SoundPool sp;
	int seID_set = -1;
	
	//BGM
	MediaPlayer mp;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);


		//リソースファイルからSEをロード
				sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
				seID_set = sp.load(this, R.raw.set, 1);

		//画面表示時にキーボードが表示されないように設定する
		this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

		setContentView(R.layout.activity_setting);

		//SharedPreferencesの値が存在する場合、保存されたスピナーのリスト位置、EditTextの値を読み出す
		SharedPreferences spExist = PreferenceManager.getDefaultSharedPreferences(this);
		if (spExist.contains("zibun_text_color") == true && spExist.contains("aite_text_color") == true
				&& spExist.contains("use_text_color") == true) {
			//スピナーのリスト位置を設定
			readlist();
			//EditTextの値を設定
			EditText hn = (EditText) findViewById(R.id.handle_name);
			hn.setText(spExist.getString("handle_name_string", null), BufferType.NORMAL);
		}
		else {
			//何もしない

		}

		// スピナーのアイテムが選択された時に呼び出されるコールバックリスナーを登録します
		Spinner zibun_text_color_spinner = (Spinner) this.findViewById(R.id.zibun_text_color_spinner);
		zibun_text_color_spinner.setSelection(rztc);
		zibun_text_color_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			//Spinnerのドロップダウンアイテムが選択された時
			public void onItemSelected(AdapterView parent, View viw, int arg2, long arg3) {
				Spinner spinner = (Spinner) parent;
				ztc = (String) spinner.getSelectedItem();
			}

			//Spinnerのドロップダウンアイテムが選択されなかった時
			public void onNothingSelected(AdapterView parent) {
			}
		});

		// スピナーのアイテムが選択された時に呼び出されるコールバックリスナーを登録します
		Spinner aite_text_color_spinner = (Spinner) this.findViewById(R.id.aite_text_color_spinner);
		aite_text_color_spinner.setSelection(ratc);
		aite_text_color_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			//Spinnerのドロップダウンアイテムが選択された時
			public void onItemSelected(AdapterView parent, View viw, int arg2, long arg3) {
				Spinner spinner = (Spinner) parent;
				atc = (String) spinner.getSelectedItem();
			}

			//Spinnerのドロップダウンアイテムが選択されなかった時
			public void onNothingSelected(AdapterView parent) {
			}
		});

		// スピナーのアイテムが選択された時に呼び出されるコールバックリスナーを登録します
		Spinner use_text_color_spinner = (Spinner) this.findViewById(R.id.use_text_color_spinner);
		use_text_color_spinner.setSelection(rutc);
		use_text_color_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
			//Spinnerのドロップダウンアイテムが選択された時
			public void onItemSelected(AdapterView parent, View viw, int arg2, long arg3) {
				Spinner spinner = (Spinner) parent;
				utc = (String) spinner.getSelectedItem();
			}

			//Spinnerのドロップダウンアイテムが選択されなかった時
			public void onNothingSelected(AdapterView parent) {
			}
		});

		//setting_enter buttonの取得
		Button setting_enter = (Button) findViewById(R.id.setting_enter);

		//setting_enter buttonのクリックリスナー
		setting_enter.setOnClickListener(
				new OnClickListener() {
					public void onClick(View v) {
						//edittextの取得
						EditText hn = (EditText) findViewById(R.id.handle_name);
						handleName = hn.getText().toString();
						saveBack_Ground(ztc, atc, utc, handleName);

					}
				});

		//textViewの取得
		TextView ztctv = (TextView) findViewById(R.id.ztctv);
		TextView atctv = (TextView) findViewById(R.id.atctv);
		TextView utctv = (TextView) findViewById(R.id.utctv);
		TextView hntv = (TextView) findViewById(R.id.hntv);

		//SharedPreferencesの値が存在する場合、テキストビューに値およびカラーを設定する。
		if (spExist.contains("zibun_text_color") == true && spExist.contains("aite_text_color") == true
				&& spExist.contains("use_text_color") == true) {
			//SharedPreferencesの値をテキストビューに設定
			SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
			ztctv.setText(sp.getString("zibun_text_color", null), BufferType.NORMAL);
			atctv.setText(sp.getString("aite_text_color", null), BufferType.NORMAL);
			utctv.setText(sp.getString("use_text_color", null), BufferType.NORMAL);
			hntv.setText(sp.getString("handle_name_string", null), BufferType.NORMAL);
			ztcc = sp.getString("zibun_text_color", null);
			atcc = sp.getString("aite_text_color", null);
			utcc = sp.getString("use_text_color", null);
			ztctv.setTextColor(Color.parseColor(ztcc));
			atctv.setTextColor(Color.parseColor(atcc));
			utctv.setTextColor(Color.parseColor(utcc));
		}
	}
	
	/**
	 * アクティビティ開始時に呼ばれる.
	 */
	@Override
	public void onStart() {
		super.onStart();
		//BGMを再生
		mp = MediaPlayer.create( this, R.raw.menumusic);
		mp.setLooping(true);
		mp.start();
	}
	
	/**
	 * アクティビティの停止時に呼ばれる.
	 */
	@Override
	public void onStop() {
		super.onStop();
		//BGMを停止
		mp.stop();
		mp.release();
	}


/**
	 * アクティビティ終了時に呼ばれる.
	 */
	public void onDestoroy() {
		super.onDestroy();

		sp.stop(seID_set);
		sp.unload(seID_set);
		sp.release();
	}

	/**
	 * 入力された設定をプリファレンスに保存する
	 * */
	public void saveBack_Ground(String ztc, String atc, String utc, String handleName) {
		commit_SharedPreferences();
		//効果音を鳴らす
		sp.play(seID_set, 1.0F, 1.0F, 0, 0, 1.0F);
		Toast.makeText(this, "設定が保存されました", Toast.LENGTH_SHORT).show();
	}

	/**
	 *保存されたスピナーリスト位置を読み出す
	 * */
	public void readlist() {
		SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
		ztc = sp.getString("zibun_text_color", null);
		atc = sp.getString("aite_text_color", null);
		utc = sp.getString("use_text_color", null);

		if (ztc.equals("BLACK")) {
			rztc = 0;
		}
		else if (ztc.equals("BLUE")) {
			rztc = 1;
		}
		else if (ztc.equals("CYAN")) {
			rztc = 2;
		}
		else if (ztc.equals("GRAY")) {
			rztc = 3;
		}
		else if (ztc.equals("GREEN")) {
			rztc = 4;
		}
		else if (ztc.equals("MAGENTA")) {
			rztc = 5;
		}
		else if (ztc.equals("RED")) {
			rztc = 6;
		}
		else if (ztc.equals("WHITE")) {
			rztc = 7;
		}
		else if (ztc.equals("YELLOW")) {
			rztc = 8;
		}
		else {
			rztc = 0;
		}

		if (atc.equals("BLACK")) {
			ratc = 0;
		}
		else if (atc.equals("BLUE")) {
			ratc = 1;
		}
		else if (atc.equals("CYAN")) {
			ratc = 2;
		}
		else if (atc.equals("GRAY")) {
			ratc = 3;
		}
		else if (atc.equals("GREEN")) {
			ratc = 4;
		}
		else if (atc.equals("MAGENTA")) {
			ratc = 5;
		}
		else if (atc.equals("RED")) {
			ratc = 6;
		}
		else if (atc.equals("WHITE")) {
			ratc = 7;
		}
		else if (atc.equals("YELLOW")) {
			ratc = 8;
		}
		else {
			ratc = 0;
		}

		if (utc.equals("BLACK")) {
			rutc = 0;
		}
		else if (utc.equals("BLUE")) {
			rutc = 1;
		}
		else if (utc.equals("CYAN")) {
			rutc = 2;
		}
		else if (utc.equals("GRAY")) {
			rutc = 3;
		}
		else if (utc.equals("GREEN")) {
			rutc = 4;
		}
		else if (utc.equals("MAGENTA")) {
			rutc = 5;
		}
		else if (utc.equals("RED")) {
			rutc = 6;
		}
		else if (utc.equals("WHITE")) {
			rutc = 7;
		}
		else if (utc.equals("YELLOW")) {
			rutc = 8;
		}
		else {
			rutc = 0;
		}

	}

	/**
	 *プリファレンスをコミットする
	 * */
	public void commit_SharedPreferences() {
		// プリファレンスの準備 //
		SharedPreferences pref =
				PreferenceManager.getDefaultSharedPreferences(this);

		// プリファレンスに書き込むためのEditorオブジェクト取得 //
		Editor editor = pref.edit();

		// "zibun_text_color" というキーで名前を登録
		editor.putString("zibun_text_color", ztc);

		// "aite_text_color" というキーで名前を登録
		editor.putString("aite_text_color", atc);

		// "use_text_color" というキーで名前を登録
		editor.putString("use_text_color", utc);

		//"handle_name_string"というキーで名前を登録
		editor.putString("handle_name_string", handleName);

		// 書き込みの確定（実際にファイルに書き込む）
		editor.commit();

		//textViewの取得
		TextView ztctv = (TextView) findViewById(R.id.ztctv);
		TextView atctv = (TextView) findViewById(R.id.atctv);
		TextView utctv = (TextView) findViewById(R.id.utctv);
		TextView hntv = (TextView) findViewById(R.id.hntv);
		//edittextの取得
		EditText hn = (EditText) findViewById(R.id.handle_name);

		SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
		ztctv.setText(sp.getString("zibun_text_color", null), BufferType.NORMAL);
		atctv.setText(sp.getString("aite_text_color", null), BufferType.NORMAL);
		utctv.setText(sp.getString("use_text_color", null), BufferType.NORMAL);
		hntv.setText(sp.getString("handle_name_string", null), BufferType.NORMAL);
		ztcc = sp.getString("zibun_text_color", null);
		atcc = sp.getString("aite_text_color", null);
		utcc = sp.getString("use_text_color", null);
		ztctv.setTextColor(Color.parseColor(ztcc));
		atctv.setTextColor(Color.parseColor(atcc));
		utctv.setTextColor(Color.parseColor(utcc));
	}

	//バックボタンを押下した際の処理
		@Override
		public boolean onKeyDown(int keyCode, KeyEvent event) {
			if (keyCode == KeyEvent.KEYCODE_BACK) {
				sp.stop(seID_set);
				sp.unload(seID_set);
				sp.release();
				this.finish();
				return true;
			}
			return false;
		}

}